package com.parking.order.model.exception;

/**
 * 订单模块异常枚举类
 * */
public enum OrderExceptionCode {
    /**
    * 第一位表示模块 1物业 2订单 3平台 4出租客 5车位 6用户
    * 后三位按000-999依次递增
    *
    * ORDER(模块名)_EXCEPTION_CODE_YYY_YYY 全英文大写
    *
    * 项目中抛异常的方式
    * new OrderException(OrderExceptionCode.ORDER_EXCEPTION_CODE_TEST);
    * */

    /**
     * 测试异常
     * */
    ORDER_EXCEPTION_CODE_TEST(2000,"这里填写异常信息"),
    /**
     * 订单状态异常
     * */
    ORDER_EXCEPTION_CODE_WRONG_ORDER_STATE(2001,"订单状态异常"),
    /**
     * 订单不存在
     * */
    ORDER_EXCEPTION_CODE_ORDER_NOT_EXISTS(2002,"订单不存在"),
    /**
     * 订单开始时间应早于结束时间
     * */
    ORDER_EXCEPTION_CODE_ORDER_TIME_START_NOT_BEFORE_END(2003,"订单开始时间应早于结束时间"),
    /**
     * 订单开始结束时间必须是最近两天
     * */
    ORDER_EXCEPTION_CODE_ORDER_TIME_THESE_TWO_DAYS(2004,"订单开始结束时间必须是最近两天"),
    /**
     * 订单开始结束时间分钟数必须为15的倍数 秒钟数必须为0
     * */
    ORDER_EXCEPTION_CODE_ORDER_TIME_MINUTES_AND_SECONDS(2005,"订单开始结束时间分钟数必须为15的倍数 秒钟数必须为0"),
    /**
     * 订单开始结束时间必须相差整小时
     * */
    ORDER_EXCEPTION_CODE_ORDER_TIME_TOTAL_HOURS(2006,"订单开始结束时间必须相差整小时"),
    /**
     * 用户车辆不从属于该用户
     * */
    ORDER_EXCEPTION_CODE_USER_CAR_AND_ID_NOT_MATCH(2007,"用户车辆不从属于该用户"),
    /**
     * 订单时间超出车位出租时间
     * */
    ORDER_EXCEPTION_CODE_ORDER_TIME_STALL_TIME_NOT_MATCH(2008,"订单时间超出车位出租时间"),
    /**
     * 该车位现存超时订单
     * */
    ORDER_EXCEPTION_CODE_STALL_ORDER_OVERTIME_EXISTS(2009,"该车位现存超时订单"),
    /**
     * 与该车位现存订单时间冲突
     * */
    ORDER_EXCEPTION_CODE_ORDER_STALL_ORDER_TIME_CONFLICTS(2010,"与该车位现存订单时间冲突"),
    /**
     * 存在正在超时的订单
     * */
    ORDER_EXCEPTION_CODE_ORDER_OVERTIME_ING(2011,"存在正在超时的订单"),
    /**
     * 存在未被支付的超时订单
     * */
    ORDER_EXCEPTION_CODE_ORDER_OVERTIME_NOT_PAID(2012,"存在未被支付的超时订单"),
    /**
     * 根据入场信息无法找到对应的订单
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_NO_ORDER_INFO(2013,"根据入场信息无法找到对应的订单"),
    /**
     * 根据订单结束时间 已经不能继续入场
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_WRONG_ORDER_INFO(2014,"根据订单结束时间 已经不能继续入场"),
    /**
     * 根据出场信息无法找到对应的出入场记录
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_NO_MATCH(2015,"根据出场信息无法找到对应的出入场记录"),
    /**
     * 出入场信息中进入时间不能晚于出场时间
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_ENTER_OUT_TIME_CONFLICT(2016,"出入场信息中进入时间不能晚于出场时间"),
    /**
     * 出入场车牌号信息异常
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_WRONG_CAR_PLATE(2017,"出入场车牌号信息异常"),
    /**
     * 订单已经评论过
     * */
    ORDER_EXCEPTION_CODE_ORDER_COMMENT_ALREADY(2018,"订单已经评论过"),
    /**
     * 订单不从属于该用户
     * */
    ORDER_EXCEPTION_CODE_ORDER_NOT_BELONG_TO_THIS_USER(2019,"订单不从属于该用户"),
    /**
     * 订单不从属于该物业
     * */
    ORDER_EXCEPTION_CODE_ORDER_NOT_BELONG_TO_THIS_CERTIFIED(2019,"订单不从属于该物业"),
    /**
     * 超时订单请先支付再评论
     * */
    ORDER_EXCEPTION_CODE_OVERTIME_ORDER_NO_COMMENT(2020,"超时订单请先支付再评论"),
    /**
     * orderInfoStateFurther超出范围
     * */
    ORDER_EXCEPTION_CODE_ORDER_INFO_STATE_FURTHER_OUT(2021,"orderInfoStateFurther超出范围"),
    /**
     * 订单不从属于该出租客
     * */
    ORDER_EXCEPTION_CODE_ORDER_NOT_BELONG_TO_THIS_RENTERS(2022,"订单不从属于该出租客"),
    /**
     * 该订单暂无进出场信息
     * */
    ORDER_EXCEPTION_CODE_ORDER_NO_ENTRANCE_INFO(2023,"该订单暂无进出场信息"),
    /**
     * 该订单暂无超时订单信息
     * */
    ORDER_EXCEPTION_CODE_ORDER_NO_OVERTIME_INFO(2024,"该订单暂无超时订单信息"),
    /**
     * 该订单暂无评论信息
     * */
    ORDER_EXCEPTION_CODE_ORDER_NO_COMMENT_INFO(2025,"该订单暂无评论信息"),
    /**
     * 超时订单已支付
     * */
    ORDER_EXCEPTION_CODE_OVERTIME_ALREADY_PAID(2026,"超时订单已支付"),
    /**
     * 查询支付状态时发现已支付 且已开启服务 故用户不能退单
     * */
    ORDER_EXCEPTION_CODE_CAN_BEGIN_NO_REFUND(2027,"查询支付状态时发现已支付 且已开启服务 故用户不能退单"),
    /**
     * 开始时间应早于结束时间
     * */
    ORDER_EXCEPTION_CODE_START_NOT_BEFORE_END(2028,"开始时间应早于结束时间"),
    /**
     * 车位信息不从属于该物业
     * */
    ORDER_EXCEPTION_CODE_STALL_AND_CERTIFIED_NOT_MATCH(2029,"车位信息不从属于该物业"),
    /**
     * 超时订单不从属于该用户
     * */
    ORDER_EXCEPTION_CODE_ORDER_OVERTIME_NOT_BELONG_TO_THIS_USER(2030,"超时订单不从属于该用户"),
    /**
     * 进出入信息错误 该车辆已经存在一个只进不出的进出入信息
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_TWO_IN_NO_OUT(2031,"进出入信息错误 该车辆已经存在一个只进不出的进出信息"),
    /**
     * 进出入信息错误 该车辆存在出车位时间不早于参数中的进入时间
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_PAST_IN(2031,"进出入信息错误 该车辆存在出车位时间不早于参数中的进入时间"),
    /**
     * 不能在订单开始时间以前入场
     * */
    ORDER_EXCEPTION_CODE_ENTRANCE_INFO_NOT_COME_BEFORE_START(2032,"不能在订单开始时间以前入场");

    /**
     * 异常编码
     * */
    private final Integer code;
    /**
     * 异常信息
     * */
    private final String message;

    /**
     * 订单异常枚举类构造方法
     * 参数 code 异常编码
     *     message 异常信息
     * 返回 订单异常枚举类对象
     * */
    OrderExceptionCode(Integer code,String message){
        this.code=code;
        this.message=message;
    }

    /**
     * 订单异常枚举类Get方法
     * 参数 订单异常枚举类
     * 返回 code 异常编码
     * */
    public Integer getCode() {
        return code;
    }
    /**
     * 订单异常枚举类Get方法
     * 参数 订单异常枚举类
     * 返回 message 异常信息
     * */
    public String getMessage() {
        return message;
    }
}
